1591C - Minimize Distance - CodeForces Solution


greedy math *1300

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n,k=map(int,input().split())
    arr=list(map(int,input().split()))
    pos=[]
    neg=[]
    dist=0
    for item in arr:
        if item>=0:
            pos.append(item)
        elif item<0:
            neg.append(item*(-1))
    pos.sort()
    neg.sort()
    if len(neg)==0:
        for i in range(len(pos)-1,-1,-k):
            dist+=2*pos[i]
        dist-=pos[-1] 
    elif len(pos)==0:
        for i in range(len(neg)-1,-1,-k):
            dist+=2*neg[i]
        dist-=neg[-1] 
    elif pos[-1]>neg[-1]:
        for i in range(len(neg)-1,-1,-k):
            dist+=2*neg[i]
        for i in range(len(pos)-1,-1,-k):
            dist+=2*pos[i]
        dist-=pos[-1]
    elif neg[-1]>=pos[-1]:
        for i in range(len(pos)-1,-1,-k):
            dist+=2*pos[i]
        for i in range(len(neg)-1,-1,-k):
            dist+=2*neg[i]
        dist-=neg[-1]
    print(dist)


Comments

Submit
0 Comments
More Questions

545B - Equidistant String
1244C - The Football Season
1696B - NIT Destroys the Universe
1674A - Number Transformation
1244E - Minimizing Difference
1688A - Cirno's Perfect Bitmasks Classroom
219A - k-String
952A - Quirky Quantifiers
451B - Sort the Array
1505H - L BREAK into program
171E - MYSTERIOUS LANGUAGE
630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key